// app.go
package main

import (
	"context"
	"time"
	"your_project/backend/models"   // 请替换为你的实际模块路径
	"your_project/backend/services" // 请替换为你的实际模块路径
)

type App struct {
	ctx       context.Context
	dbService *services.DatabaseService
}

func NewApp(dbService *services.DatabaseService) *App {
	return &App{
		dbService: dbService,
	}
}

func (a *App) startup(ctx context.Context) {
	a.ctx = ctx
}

// AddTransaction 前端调用此方法来添加新交易
func (a *App) AddTransaction(transaction models.Transaction) error {
	// 你可以在这里添加数据验证逻辑
	return a.dbService.AddTransaction(transaction)
}

// GetMonthlyTransactions 前端调用此方法来获取月交易记录
func (a *App) GetMonthlyTransactions(year int, month time.Month) ([]models.Transaction, error) {
	return a.dbService.GetMonthlyTransactions(year, month)
}

// GetMonthlyExpenseSum 前端调用此方法来获取月消费总和
func (a *App) GetMonthlyExpenseSum(year int, month time.Month) (float64, error) {
	return a.dbService.CalculateMonthlySum(year, month)
}

// ShowAlert 显示消息弹窗提醒 (Wails 提供了前端对话框支持)
func (a *App) ShowAlert(message string) {
	// 注意：这里需要在前端实现显示弹窗的逻辑，例如调用JavaScript的alert或自定义模态框。
	// 后端可以通过事件机制（Emit）或调用前端绑定的方法来触发。
	// 此处为概念展示，具体实现需结合前端代码。
}
